package tlias.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import tlias.mapper.EmpMapper;
import tlias.pojo.Emp;
import tlias.pojo.PageBean;
import tlias.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Service
//这里注意，在方法实现的时候，可能需要你手动接一下这个接口，前面的那个自动装配才可能不报错
public class EmpServicelmpl implements EmpService {

    //这里定义这个变量，是因为service不能直接操作数据，所以必须得引入mapper，也就是数据操作层来进行操作（耦合）
    @Autowired
    private EmpMapper empMapper;

    @Override
    public PageBean page(Integer page, Integer pageSize,String name,Short gender, LocalDate begin, LocalDate end) {

       //设置分页参数（所有的参数查询都是pagehelper执行的，所以sql语句中就简单的查询一下即可）
        PageHelper.startPage(page,pageSize);

        //执行查询操作(第一行代码会自动的对sql语句执行分页查询操作，第二行代码是为了把empList强转为Page属性，封装在page这个对象当中，以便下面可以调用oage方法来获取参数)
        List<Emp> empList = empMapper.list(name,gender,begin,end);
        Page<Emp> p = (Page<Emp>)empList;

        //封装到pageBean中（gettotal是获取全部参数，getresult是获取员工信息）
        PageBean pageinfo = new PageBean(p.getTotal(),p.getResult());
        return pageinfo;
    }

    @Override
    public void delete(List<Integer> ids) {
        empMapper.delete(ids);
    }

    //void函数不需要返回值
    @Override
    public void add(Emp emp) {
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        empMapper.insert(emp);
    }

    //根据id查询员工
    @Override
    public Emp getById(Integer id) {
        return empMapper.getById(id);
    }

    //更新员工信息
    @Override
    public void update(Emp emp) {
        emp.setUpdateTime(LocalDateTime.now());

        empMapper.update(emp);
    }

    //登录验证(这里通过如果根据用户名和密码查询到员工）
    @Override
    public Emp login(Emp emp) {
        return empMapper.getByUsernameAndPassword(emp);
    }
}
